
 <!DOCTYPE HTML>
<html >
<head>
  <meta charset="UTF-8">
  
    <title>谭俊熙 - 区块链学习报告 | B3434lockchain</title>
    <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
    
    <meta name="author" content="b3434lockchain">
    

    
    <meta name="description" content="人类近年来导致生产效率大幅提升的重要发明，简单的描述就是  蒸汽机提高了人类体力劳动的效率 计算机提高了人类脑力劳动的效率 互联网提高了人类信息传递的效率 区块链将提高人类互相信任的效率  人类信任的成本是极高的，能解决这些问题的公司机构往往都是极赚钱的。尽管目前看起来他们解决的也还不是特别好，金融欺诈仍然屡见不鲜，金融家导致金融危机，淘宝京东各类APP假货、刷评价等问题时常出现。通过区块链技术未">
<meta name="keywords" content="周报,学习报告,谭俊熙">
<meta property="og:type" content="article">
<meta property="og:title" content="谭俊熙 - 区块链学习报告">
<meta property="og:url" content="http://b3434lockchain.gitee.io/2018/10/14/tanjunxi/tanjunxi2/index.html">
<meta property="og:site_name" content="B3434lockchain">
<meta property="og:description" content="人类近年来导致生产效率大幅提升的重要发明，简单的描述就是  蒸汽机提高了人类体力劳动的效率 计算机提高了人类脑力劳动的效率 互联网提高了人类信息传递的效率 区块链将提高人类互相信任的效率  人类信任的成本是极高的，能解决这些问题的公司机构往往都是极赚钱的。尽管目前看起来他们解决的也还不是特别好，金融欺诈仍然屡见不鲜，金融家导致金融危机，淘宝京东各类APP假货、刷评价等问题时常出现。通过区块链技术未">
<meta property="og:locale" content="default">
<meta property="og:updated_time" content="2018-10-14T13:58:30.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="谭俊熙 - 区块链学习报告">
<meta name="twitter:description" content="人类近年来导致生产效率大幅提升的重要发明，简单的描述就是  蒸汽机提高了人类体力劳动的效率 计算机提高了人类脑力劳动的效率 互联网提高了人类信息传递的效率 区块链将提高人类互相信任的效率  人类信任的成本是极高的，能解决这些问题的公司机构往往都是极赚钱的。尽管目前看起来他们解决的也还不是特别好，金融欺诈仍然屡见不鲜，金融家导致金融危机，淘宝京东各类APP假货、刷评价等问题时常出现。通过区块链技术未">

    
    <link rel="alternative" href="/atom.xml" title="B3434lockchain" type="application/atom+xml">
    
    
    <link rel="icon" href="/img/favicon.ico">
    
    
    <link rel="apple-touch-icon" href="/img/jacman.jpg">
    <link rel="apple-touch-icon-precomposed" href="/img/jacman.jpg">
    
    <link rel="stylesheet" href="/css/style.css">
</head>

  <body>
    <header>
      
<div>
		
			<div id="imglogo">
				<a href="/"><img src="/img/logo.png" alt="B3434lockchain" title="B3434lockchain"/></a>
			</div>
			
			<div id="textlogo">
				<h1 class="site-name"><a href="/" title="B3434lockchain">B3434lockchain</a></h1>
				<h2 class="blog-motto"></h2>
			</div>
			<div class="navbar"><a class="navbutton navmobile" href="#" title="Menu">
			</a></div>
			<nav class="animated">
				<ul>
					<ul>
					 
						<li><a href="/">Home</a></li>
					
						<li><a href="/archives">Archives</a></li>
					
						<li><a href="/about">About</a></li>
					
					<li>
 					
						<form class="search" action="https://www.baidu.com" target="_blank">
							<label>Search</label>
						<input name="s" type="hidden" value=  ><input type="text" name="q" size="30" placeholder="Search"><br>
						</form>
					
					</li>
				</ul>
			</nav>			
</div>
    </header>
    <div id="container">
      <div id="main" class="post" itemscope itemprop="blogPost">
  
	<article itemprop="articleBody"> 
		<header class="article-info clearfix">
  <h1 itemprop="name">
    
      <a href="/2018/10/14/tanjunxi/tanjunxi2/" title="谭俊熙 - 区块链学习报告" itemprop="url">谭俊熙 - 区块链学习报告</a>
  </h1>
  <p class="article-author">By
       
		<a href="/about" title="b3434lockchain" target="_blank" itemprop="author">b3434lockchain</a>
		
  <p class="article-time">
    <time datetime="2018-10-14T03:00:00.000Z" itemprop="datePublished"> Published 2018-10-14</time>
    
  </p>
</header>
	<div class="article-content">
		
		<div id="toc" class="toc-article">
			<strong class="toc-title">Contents</strong>
		
			<ol class="toc"><li class="toc-item toc-level-4"><a class="toc-link" href="#比特币（区块链1-0）"><span class="toc-number">1.</span> <span class="toc-text">比特币（区块链1.0）</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#比特币是什么："><span class="toc-number">1.0.1.</span> <span class="toc-text">比特币是什么：</span></a></li></ol></li></ol></li><li class="toc-item toc-level-4"><a class="toc-link" href="#以太坊（区块链2-0）"><span class="toc-number">2.</span> <span class="toc-text">以太坊（区块链2.0）</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#EOS（区块链3-0）"><span class="toc-number">3.</span> <span class="toc-text">EOS（区块链3.0）</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#超级账本（Hyperledger）"><span class="toc-number">4.</span> <span class="toc-text">超级账本（Hyperledger）</span></a><ol class="toc-child"><li class="toc-item toc-level-5"><a class="toc-link" href="#1-Fabric中节点间的架构与作用"><span class="toc-number">4.1.</span> <span class="toc-text">1. Fabric中节点间的架构与作用</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#客户端节点"><span class="toc-number">4.1.1.</span> <span class="toc-text">客户端节点</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#CA节点"><span class="toc-number">4.1.2.</span> <span class="toc-text">CA节点</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#PEER节点"><span class="toc-number">4.1.3.</span> <span class="toc-text">PEER节点</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Endorser-peer"><span class="toc-number">4.1.4.</span> <span class="toc-text">Endorser peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Leader-Peer"><span class="toc-number">4.1.5.</span> <span class="toc-text">Leader Peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Committer-Peer"><span class="toc-number">4.1.6.</span> <span class="toc-text">Committer Peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Anchor-Peer"><span class="toc-number">4.1.7.</span> <span class="toc-text">Anchor Peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Orderer（排序服务节点）"><span class="toc-number">4.1.8.</span> <span class="toc-text">Orderer（排序服务节点）</span></a></li></ol></li><li class="toc-item toc-level-5"><a class="toc-link" href="#2-Fabric交易周期"><span class="toc-number">4.2.</span> <span class="toc-text">2. Fabric交易周期</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#第一阶段"><span class="toc-number">4.2.1.</span> <span class="toc-text">第一阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第二阶段"><span class="toc-number">4.2.2.</span> <span class="toc-text">第二阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第三阶段"><span class="toc-number">4.2.3.</span> <span class="toc-text">第三阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第四阶段"><span class="toc-number">4.2.4.</span> <span class="toc-text">第四阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第五阶段"><span class="toc-number">4.2.5.</span> <span class="toc-text">第五阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第六阶段"><span class="toc-number">4.2.6.</span> <span class="toc-text">第六阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第七阶段"><span class="toc-number">4.2.7.</span> <span class="toc-text">第七阶段</span></a></li></ol></li></ol></li></ol>
		
		</div>
		
		<p><em>人类近年来导致生产效率大幅提升的重要发明，简单的描述就是</em></p>
<ol>
<li>蒸汽机提高了人类体力劳动的效率</li>
<li>计算机提高了人类脑力劳动的效率</li>
<li>互联网提高了人类信息传递的效率</li>
<li>区块链将提高人类互相信任的效率</li>
</ol>
<p><em>人类信任的成本是极高的，能解决这些问题的公司机构往往都是极赚钱的。尽管目前看起来他们解决的也还不是特别好，金融欺诈仍然屡见不鲜，金融家导致金融危机，淘宝京东各类APP假货、刷评价等问题时常出现。通过区块链技术未来有望大大降低这种中间的信任成本，甚至消灭许多中间机构，且解决的会比现有体制更彻底，可以想象这将大大提高人类生产活动中的效率。</em></p>
<p>下面对区块链的一些应用进行列举</p>
<hr>
<h4 id="比特币（区块链1-0）"><a href="#比特币（区块链1-0）" class="headerlink" title="比特币（区块链1.0）"></a>比特币（区块链1.0）</h4><p>说起区块链，第一个想到的当然就是比特币了！<br>那么比特币究竟是个什么东西呢？<br>网上的答案有很多，无异于什么比特币是一种去中心化的数字货币，拥有稀缺性、安全性、匿名性、透明性、免交易费等优点。<br>但是最近我在知乎上看到一篇文章，他是用历史，演义的角度去解释比特币的，我觉得十分新颖，所以这里借鉴一下</p>
<h6 id="比特币是什么："><a href="#比特币是什么：" class="headerlink" title="比特币是什么："></a>比特币是什么：</h6><p>很久很久以前，人们是以物易物进行交易的。再后来，人们觉得以物易物太过麻烦，同时，某种贝壳变得十分稀少。于是，认同了它成为一般等价物，这就是最原始的货币。</p>
<p>时间过去千年，互联网诞生了，人类进入信息时代。从那个时候开始，就不断地有人尝试在互联网上复制这种最原始的货币交易方式，却一直没有成功，直到出现了比特币。<br>所以从这个角度来说，比特币是什么呢？</p>
<p>比特币是人类在数字世界复制最原始的货币交易的所有尝试中，到目前为止，第一个接近成功的作品。</p>
<p>复制现实社会中的交易为什么这么难，原因在于数字世界的东西不像现实世界，太容易被复制了。在漫长的探索中，人们发现了“交易到交易”的账本是最合适的形式，发现了双重支付是最大问题，发现了想要去中心化，必须建立分布式共识，必须解决拜占庭将军算法的问题。。。。。。</p>
<p>而中本聪用了一个很天才的想法解决了这些问题</p>
<ul>
<li><p><strong>用交易记录来表示的货币形式</strong><br>比特币其实就是一个帐本，所有的历史交易就是比特币的实体。“未使用的收入作为支出”就是比特币采用的交易形式</p>
</li>
<li><p><strong>哈希函数和链式结构来保证账本完整性和真实性</strong><br>哈希算法的作用主要是用于消息摘要和签名（数字签名），换句话说，它主要用于对整个消息的完整性进行校验。链式结构其实有两层，一层是每笔交易指向前一笔交易，一层是打包交易的区块与前一个区块相连。</p>
</li>
<li><p><strong>引入一个共识算法——POW</strong><br>POW的特点：</p>
<ol>
<li>只能用穷举法寻求随机值</li>
<li>所有寻找随机值的过程全凭运气</li>
<li>难度可调-调整0的个数</li>
<li>难度调整可按照一个标准进行：即工作量证明成本高于作恶收益</li>
</ol>
<p>有了POW，节点在发送信息的时候加入了成本，降低了垃圾信息的传递，即每一个节点要传递信息必须要经过大量的尝试和计算才能得出结果，而其他节点只需要少量的成本就可以验算结果。<br>并且在传递消息的时候使用<em>非对称加密</em>，每个节点收到发起者的信息必须签名盖章，确认各自身份。<br>再加上<em>时间戳</em>，即所有交易都有先后顺序。所有交易，要按照先后顺序，给其加上时间戳，前面一笔交易成功后，整个交易链被公认后，下一笔交易是基于上一笔交易来生成的，整个交易就是一个交易链。<br>这样就成功解决了拜占庭将军，双重支付，女巫攻击等等问题了</p>
</li>
<li><p><strong>通过奖励机制激励节点去争夺记账</strong><br>对记账者进行比特币奖励和交易手续费奖励（当所有的比特币都挖完后，则完全通过交易手续费进行奖励。记账者可优先选择更高额手续费的交易进行记账）。有了这个奖励机制就使得节点有了足够的动力去记账。</p>
</li>
<li><p><strong>最长链共识解决不一致问题</strong><br>因为网络是存在延迟的，所以会存在两个矿工同时挖出区块的可能，当发生这种情况时，如果他们一起记账就会造成区块链的分叉。此时，系统就会根据最长链原则进行取舍，即哪个新产生的区块能使其所在的区块链变得更长，则哪个区块得以被记录。最长链通常也被称为“主链”。<br>当然，这个最长链共识也会带来一点小小的问题，在比特币的升级扩容（增加交易量上限）过程中，会出现_分叉_</p>
<ol>
<li><p><strong>硬分叉</strong>：旧节点不接受新节点产生的区块。</p>
<blockquote>
<p>于是新节点和旧节点会开始在不同的区块链上运行（挖矿、交易、验证等），由于新旧节点可能长期存在，这种分叉也可能会长期持续下去。</p>
</blockquote>
</li>
<li><p><strong>伪·软分叉</strong>（不分叉）：旧节点接受新区块，新节点也接受旧区块。</p>
<blockquote>
<p>这种情况并不会导致分叉，因为这种升级并没有改变区块的格式。</p>
</blockquote>
</li>
<li><p><strong>真·软分叉</strong>：旧节点接受新区快，新节点不接受旧区块。</p>
<blockquote>
<p>如果<strong>新节点算力超过50%</strong>：这时虽然旧节点会在新区快上挖矿，但是由于新节点不会在旧区块上挖矿，且新节点算力较大，那么最终最长链一定是由新区块组成的链。而且，这条最长链是双方都认为合法的一条，所以旧节点这个时候出于自身利益的考虑，也会升级成新节点——这就是软分叉的最好结果。<br>如果<strong>新节点算力不足50%</strong>：这种情况下，由于新节点不会在旧区块上挖矿，所以即便新节点先挖出几块矿，但是到了最后肯定会全是旧区块。然而新节点会认为只有新节点的才是合法的，所以就出现了分叉。</p>
</blockquote>
</li>
</ol>
<p>那怎么去扩容呢？<br><strong>隔离见证</strong></p>
<blockquote>
<p>简单来说，隔离见证就是把交易里的所有签名改成脚本，然后把所有的签名打包丢到后面去，这样250字节的交易里就多出了大概2/3的空间了。于是1MB的区块里面就能放10000笔的交易（原来大概只有4000笔）。<br>隔离见证还支持闪电网络，简单来说就是可以将一部分交易挪到链下进行，减轻主链的负担。<br>虽然隔离见证有那么多的优点，但它却一定会降低比特币的安全性，且不被矿工所喜爱，所以也不怎么被使用。</p>
</blockquote>
</li>
</ul>
<p>最后对<strong>挖矿和记账</strong>的过程做一个总结——</p>
<p>发起交易的节点会把交易信息向全网广播，收到信息的全节点（也就是保留比特币全账本的节点）进行验证后，会把合法的交易记录到一个待打包记录的池子中。</p>
<p>这个池子里的数据会越来越多，到一定程度，矿工会从里面挑选一些交易（记得，交易方是可以提出给矿工手续费的，所以这时候肯定是手续费高的交易先被挑出来），打成一个包。这样的一个包就成为一个区块。这个区块还会附加一些其他数据。</p>
<p>在一个去中心化的系统中，每个矿工都会生成这样一个包，哪个包最终能作为系统账本的一部分被记录下来呢？这就需要共识机制。比特币系统使用的是PoW机制，计算hash，找到那个随机数nonce，这就是所谓的挖矿啦。</p>
<hr>
<h4 id="以太坊（区块链2-0）"><a href="#以太坊（区块链2-0）" class="headerlink" title="以太坊（区块链2.0）"></a>以太坊（区块链2.0）</h4><ol>
<li><p>以太坊和比特币相似，是一个开源的，基于区块链技术的分布式计算平台，它强调自己是一个智能合约系统 。</p>
<blockquote>
<p>网络中的每个节点（计算机）运行一个叫做以太坊虚拟机（EVM）的软件。将以太坊虚拟机想象成一个操作系统，它能理解并执行通过以太坊特定编程语言编写的软件。由以太坊虚拟机执行的软件/应用程序被称为“智能合约”。要在这一平台上做任何事都需付费。不过，付的不是美元或英镑等普通货币，而是该网络自带的加密货币，叫做以太币。以太币与比特币大致相同，除了一点，即以太币可以为在以太坊上执行智能合约而付费。</p>
</blockquote>
</li>
<li><p>以太坊是全球第一个ICO项目</p>
<blockquote>
<p>以太坊是全球第一个用发行自己的虚拟货币的方式来融资的案例。这种方式现在被叫作首次货币发行（Initial Coin Offering，简称ICO），简单说就是第一次对外发行自己的虚拟货币。</p>
</blockquote>
</li>
<li><p>相比于比特币，以太坊有三大特色</p>
<blockquote>
<ul>
<li>以太坊的管理更加严密<br>虽然以太坊的管理不是公司制的，是协会制的，而且是非盈利的。但是，和比特币比起来它的管理更加严密，而且它提供以太币给系统开发者和系统升级者。如果你能帮这个以太坊系统找到Bug（系统漏洞），它都会奖励以太币给你。这样的话，无疑就使得更多的开发者有更高的积极性去维护以太坊的生态系统。</li>
<li>以太坊通过成立联盟，保证应用的开放和标准化<br>以太坊的第二个特色是成立了企业以太坊联盟（ EEA ）。 这些联盟的成员一起来开发以太坊应用，而且能保证以太坊应用的开放和标准化。联盟成员很强大，这些大企业都是以太坊应用的积极引入者，而且借助以太坊来开放应用，为自己的企业客户提供服务。</li>
<li>企业可以借助以太坊来发行自己的虚拟货币完成融资。<br>这一点和比特币的区别比较大，因为比特币只是一个单一币种。而在以太坊的平台上，你可以制造出自己的虚拟货币，而且可以发行自己的虚拟货币，也就是卖自己的虚拟货币来实现融资 。</li>
</ul>
</blockquote>
</li>
</ol>
<hr>
<h4 id="EOS（区块链3-0）"><a href="#EOS（区块链3-0）" class="headerlink" title="EOS（区块链3.0）"></a>EOS（区块链3.0）</h4><p>EOS是一个全新的区块链的开放平台或操作系统，通过智能合约，为高性能分布式应用提供底层服务。和以太坊最大的不同，它的处理速度达到了每秒百万次，这种处理速度完全可以支撑起商业级别的应用。</p>
<p><strong>核心理念</strong><br>以太坊可以说就是一个纯开放平台，任由开发者创建自己需要的分布式应用。在这一过程中，以太坊所扮演的是一个纯平台的角色，不会加以干涉，也不会提供相关便捷工具和模板，即处于绝对中立的地位。</p>
<p>而EOS却恰恰相反，它为开发者提供相关工具或模块以实现相关功能，例如开发者如需加密及通讯功能，就可以通过平台所提供的工具快速实现。</p>
<p>EOS更为用户提供一套Web开发工具，可自动生成账号并进行管理，而且可以自定义接口、数据库等操作，高效地创建分布式应用，一切变得简单、轻松。</p>
<p><strong>共识机制</strong><br>EOS采用的是相对先进的股份授权证明（DPOS），可以理解为权益证明机制的升级版。</p>
<p>该机制就是建立一个类似董事会的组织，由投票选出代理人，赋予其评判区块的验证和记账的权利，当然也包括奖励的分配。</p>
<p>股份授权证明的好处显而易见，就是提升区块验证和记账的效率，从而提高整个平台的执行效率。正如EOS宣传的那样，可实现每秒百万级交易速度。</p>
<hr>
<h4 id="超级账本（Hyperledger）"><a href="#超级账本（Hyperledger）" class="headerlink" title="超级账本（Hyperledger）"></a>超级账本（Hyperledger）</h4><p>超级账本（Hyperledger）项目是目前全球市场最大的联盟链，是首个面向企业应用场景的开源分布式账本平台。</p>
<p>这里主要介绍一下<strong>Fabric</strong></p>
<h5 id="1-Fabric中节点间的架构与作用"><a href="#1-Fabric中节点间的架构与作用" class="headerlink" title="1. Fabric中节点间的架构与作用"></a>1. Fabric中节点间的架构与作用</h5><h6 id="客户端节点"><a href="#客户端节点" class="headerlink" title="客户端节点"></a>客户端节点</h6><p>客户端是最终用户操作的实体，它必须连接到某个peer节点或者orderer节点，与整个区块链网络进行通信</p>
<h6 id="CA节点"><a href="#CA节点" class="headerlink" title="CA节点"></a>CA节点</h6><p>CA节点接收客户端的注册申请，返回注册密码用于登录，以便获取身份证书。在区块链网络上所有的操作都会验证用户的身份。</p>
<h6 id="PEER节点"><a href="#PEER节点" class="headerlink" title="PEER节点"></a>PEER节点</h6><p>每个Peer节点可以担任如下多种角色：</p>
<ul>
<li>Endorser peer (背书节点)</li>
<li>Leader Peer（主节点）</li>
<li>Committer Peer（记账节点）</li>
<li><p>Anchor Peer（锚节点）</p>
<blockquote>
<p>注：每个Peer节点必定是一个记账节点，除记账节点外，它也可以担任其它一到多种角色，即某个节点可以同时是记账节点和背书节点，也可以同时是记账节点、背书节点、主节点，锚节点。</p>
<ul>
<li><h6 id="Endorser-peer"><a href="#Endorser-peer" class="headerlink" title="Endorser peer"></a>Endorser peer</h6>所谓背书(Endorsement)，就是指特定peer执行交易并向生成交易提案( proposal )的客户端应用程序返回YES/NO响应的过程。<br>也只有在应用程序向节点发起交易背书请求时才成为背书节点，其他时候是普通的记账节点，只负责验证交易并记账。</li>
</ul>
</blockquote>
<ul>
<li><h6 id="Leader-Peer"><a href="#Leader-Peer" class="headerlink" title="Leader Peer"></a>Leader Peer</h6><p>主节点负责和Orderer排序服务节点通信，从排序服务节点处获取最新的区块并在组织内部同步。</p>
</li>
<li><h6 id="Committer-Peer"><a href="#Committer-Peer" class="headerlink" title="Committer Peer"></a>Committer Peer</h6><p>负责验证从排序服务节点接收的区块里的交易，然后将块提交（写入/追加）到其通道账本的副本。记账节点还将每个块中的每个交易标记为有效或无效。</p>
</li>
<li><h6 id="Anchor-Peer"><a href="#Anchor-Peer" class="headerlink" title="Anchor Peer"></a>Anchor Peer</h6><p>anchor peer节点主要用来同步同一通道中各组织间的信息</p>
</li>
</ul>
</li>
</ul>
<h6 id="Orderer（排序服务节点）"><a href="#Orderer（排序服务节点）" class="headerlink" title="Orderer（排序服务节点）"></a>Orderer（排序服务节点）</h6><p>排序服务节点接收包含背书签名的交易，对未打包的交易进行排序生成区块，广播给Peer节点。</p>
<h5 id="2-Fabric交易周期"><a href="#2-Fabric交易周期" class="headerlink" title="2. Fabric交易周期"></a>2. Fabric交易周期</h5><p>下面用一个具体的小例子来演示一下过程：</p>
<ul>
<li><h6 id="第一阶段"><a href="#第一阶段" class="headerlink" title="第一阶段"></a>第一阶段</h6><p>客户端应用发起智能合约A的交易请求给背书节点E0。（假设智能合约A配置的背书策略要求只需要E0,E1,E3的签名）</p>
</li>
<li><h6 id="第二阶段"><a href="#第二阶段" class="headerlink" title="第二阶段"></a>第二阶段</h6><p>背书节点 E0 使用 MSP 验证签名，判断客户端应用是否被正确授权可以执行发起交易请求。然后一些值的集合，连同背书节点的签名和一个YES/NO 的陈述一起放到 proposal response 中返回给客户端应用</p>
</li>
<li><h6 id="第三阶段"><a href="#第三阶段" class="headerlink" title="第三阶段"></a>第三阶段</h6><p>客户端应用验证背书节点签名，然后继续发送背书请求给E1和E2，过程跟与E0的交互时一样。</p>
</li>
<li><h6 id="第四阶段"><a href="#第四阶段" class="headerlink" title="第四阶段"></a>第四阶段</h6><p>客户端应用收集完所有背书节点的签名后，检查是否指定的背书策略已经满足</p>
</li>
<li><h6 id="第五阶段"><a href="#第五阶段" class="headerlink" title="第五阶段"></a>第五阶段</h6><p>客户端应用将交易和响应信息封装到一个事务消息（transaction message）中，然后广播到共识网络即（Ordering Service）</p>
</li>
<li><h6 id="第六阶段"><a href="#第六阶段" class="headerlink" title="第六阶段"></a>第六阶段</h6><p>共识服务节点将打包的区块广播道同一个通道的所有peer</p>
</li>
<li><h6 id="第七阶段"><a href="#第七阶段" class="headerlink" title="第七阶段"></a>第七阶段</h6><p>Peers收到共识网络发来的区块后，会先进行以下校验：</p>
<ol>
<li>再次验证区块中的交易以确保背书策略满足</li>
<li>检查区块中的数据是否正确</li>
<li>对每个交易进行验证，确保自从读集合数据在交易执行生成后，读集合变量对应的账本的状态没有变化，也就是验证交易中的读写数据集是否与State Database的数据版本一致。</li>
</ol>
<p>验证通过后，区块中的交易打上合法和非法交易的标签，然后添加区块到通道对应的链上，同时把所有验证通过的交易的读写集中的写的部分写入状态数据库State Database。</p>
</li>
</ul>
  
	</div>
		<footer class="article-footer clearfix">
<div class="article-catetags">


  <div class="article-tags">
  
  <span></span> <a href="/tags/周报/">周报</a><a href="/tags/学习报告/">学习报告</a><a href="/tags/谭俊熙/">谭俊熙</a>
  </div>

</div>



	<div class="article-share" id="share">
	
	  <div data-url="http://b3434lockchain.gitee.io/2018/10/14/tanjunxi/tanjunxi2/" data-title="谭俊熙 - 区块链学习报告 | B3434lockchain" data-tsina="" class="share clearfix">
	  </div>
	
	</div>


</footer>

   	       
	</article>
	
<nav class="article-nav clearfix">
 
 <div class="prev" >
 <a href="/2018/10/14/susijie/susijie2/" title="苏思捷 - 区块链学习报告">
  <strong>上一篇：</strong><br/>
  <span>
  苏思捷 - 区块链学习报告</span>
</a>
</div>


<div class="next">
<a href="/2018/10/08/chenzhiling/review1/"  title="第一周review反馈">
 <strong>下一篇：</strong><br/> 
 <span>第一周review反馈
</span>
</a>
</div>

</nav>

	



</div>  
      <div class="openaside"><a class="navbutton" href="#" title="Show Sidebar"></a></div>

  <div id="toc" class="toc-aside">
  <strong class="toc-title">Contents</strong>
 
 <ol class="toc"><li class="toc-item toc-level-4"><a class="toc-link" href="#比特币（区块链1-0）"><span class="toc-number">1.</span> <span class="toc-text">比特币（区块链1.0）</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#比特币是什么："><span class="toc-number">1.0.1.</span> <span class="toc-text">比特币是什么：</span></a></li></ol></li></ol></li><li class="toc-item toc-level-4"><a class="toc-link" href="#以太坊（区块链2-0）"><span class="toc-number">2.</span> <span class="toc-text">以太坊（区块链2.0）</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#EOS（区块链3-0）"><span class="toc-number">3.</span> <span class="toc-text">EOS（区块链3.0）</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#超级账本（Hyperledger）"><span class="toc-number">4.</span> <span class="toc-text">超级账本（Hyperledger）</span></a><ol class="toc-child"><li class="toc-item toc-level-5"><a class="toc-link" href="#1-Fabric中节点间的架构与作用"><span class="toc-number">4.1.</span> <span class="toc-text">1. Fabric中节点间的架构与作用</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#客户端节点"><span class="toc-number">4.1.1.</span> <span class="toc-text">客户端节点</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#CA节点"><span class="toc-number">4.1.2.</span> <span class="toc-text">CA节点</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#PEER节点"><span class="toc-number">4.1.3.</span> <span class="toc-text">PEER节点</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Endorser-peer"><span class="toc-number">4.1.4.</span> <span class="toc-text">Endorser peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Leader-Peer"><span class="toc-number">4.1.5.</span> <span class="toc-text">Leader Peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Committer-Peer"><span class="toc-number">4.1.6.</span> <span class="toc-text">Committer Peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Anchor-Peer"><span class="toc-number">4.1.7.</span> <span class="toc-text">Anchor Peer</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#Orderer（排序服务节点）"><span class="toc-number">4.1.8.</span> <span class="toc-text">Orderer（排序服务节点）</span></a></li></ol></li><li class="toc-item toc-level-5"><a class="toc-link" href="#2-Fabric交易周期"><span class="toc-number">4.2.</span> <span class="toc-text">2. Fabric交易周期</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#第一阶段"><span class="toc-number">4.2.1.</span> <span class="toc-text">第一阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第二阶段"><span class="toc-number">4.2.2.</span> <span class="toc-text">第二阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第三阶段"><span class="toc-number">4.2.3.</span> <span class="toc-text">第三阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第四阶段"><span class="toc-number">4.2.4.</span> <span class="toc-text">第四阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第五阶段"><span class="toc-number">4.2.5.</span> <span class="toc-text">第五阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第六阶段"><span class="toc-number">4.2.6.</span> <span class="toc-text">第六阶段</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#第七阶段"><span class="toc-number">4.2.7.</span> <span class="toc-text">第七阶段</span></a></li></ol></li></ol></li></ol>
 
  </div>

<div id="asidepart">
<div class="closeaside"><a class="closebutton" href="#" title="Hide Sidebar"></a></div>
<aside class="clearfix">

  

  
<div class="tagslist">
	<p class="asidetitle">Tags</p>
		<ul class="clearfix">
		
			
				<li><a href="/tags/周报/" title="周报">周报<sup>23</sup></a></li>
			
		
			
				<li><a href="/tags/谭俊熙/" title="谭俊熙">谭俊熙<sup>11</sup></a></li>
			
		
			
				<li><a href="/tags/苏思捷/" title="苏思捷">苏思捷<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/学习报告/" title="学习报告">学习报告<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/卢家豪/" title="卢家豪">卢家豪<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/报告/" title="报告">报告<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/苏佳鑫/" title="苏佳鑫">苏佳鑫<sup>4</sup></a></li>
			
		
			
				<li><a href="/tags/冯华文/" title="冯华文">冯华文<sup>4</sup></a></li>
			
		
			
				<li><a href="/tags/周报反馈/" title="周报反馈">周报反馈<sup>2</sup></a></li>
			
		
			
				<li><a href="/tags/吴朝捷/" title="吴朝捷">吴朝捷<sup>2</sup></a></li>
			
		
			
				<li><a href="/tags/黎宁/" title="黎宁">黎宁<sup>1</sup></a></li>
			
		
			
				<li><a href="/tags/笔记/" title="笔记">笔记<sup>1</sup></a></li>
			
		
		</ul>
</div>


</aside>
</div>
    </div>
    <footer><div id="footer" >
	
	
	<div class="social-font" class="clearfix">
		
		
		
		
		
		
		
		
		
		
	</div>
			
		

		<p class="copyright">
		
		</p>
</div>
</footer>
    <script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/jquery.imagesloaded.min.js"></script>
<script src="/js/gallery.js"></script>
<script src="/js/jquery.qrcode-0.12.0.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){ 
  $('.navbar').click(function(){
    $('header nav').toggleClass('shownav');
  });
  var myWidth = 0;
  function getSize(){
    if( typeof( window.innerWidth ) == 'number' ) {
      myWidth = window.innerWidth;
    } else if( document.documentElement && document.documentElement.clientWidth) {
      myWidth = document.documentElement.clientWidth;
    };
  };
  var m = $('#main'),
      a = $('#asidepart'),
      c = $('.closeaside'),
      o = $('.openaside');
  c.click(function(){
    a.addClass('fadeOut').css('display', 'none');
    o.css('display', 'block').addClass('fadeIn');
    m.addClass('moveMain');
  });
  o.click(function(){
    o.css('display', 'none').removeClass('beforeFadeIn');
    a.css('display', 'block').removeClass('fadeOut').addClass('fadeIn');      
    m.removeClass('moveMain');
  });
  $(window).scroll(function(){
    o.css("top",Math.max(80,260-$(this).scrollTop()));
  });
  
  $(window).resize(function(){
    getSize(); 
    if (myWidth >= 1024) {
      $('header nav').removeClass('shownav');
    }else{
      m.removeClass('moveMain');
      a.css('display', 'block').removeClass('fadeOut');
      o.css('display', 'none');
      
      $('#toc.toc-aside').css('display', 'none');
        
    }
  });
});
</script>

<script type="text/javascript">
$(document).ready(function(){ 
  var ai = $('.article-content>iframe'),
      ae = $('.article-content>embed'),
      t  = $('#toc'),
      ta = $('#toc.toc-aside'),
      o  = $('.openaside'),
      c  = $('.closeaside');
  if(ai.length>0){
    ai.wrap('<div class="video-container" />');
  };
  if(ae.length>0){
   ae.wrap('<div class="video-container" />');
  };
  c.click(function(){
    ta.css('display', 'block').addClass('fadeIn');
  });
  o.click(function(){
    ta.css('display', 'none');
  });
  $(window).scroll(function(){
    ta.css("top",Math.max(140,320-$(this).scrollTop()));
  });
});
</script>


<script type="text/javascript">
$(document).ready(function(){ 
  var $this = $('.share'),
      url = $this.attr('data-url'),
      encodedUrl = encodeURIComponent(url),
      title = $this.attr('data-title'),
      tsina = $this.attr('data-tsina'),
      description = $this.attr('description');
  var html = [
  '<div class="hoverqrcode clearfix"></div>',
  '<a class="overlay" id="qrcode"></a>',
  '<a href="https://www.facebook.com/sharer.php?u=' + encodedUrl + '" class="article-share-facebook" target="_blank" title="Facebook"></a>',
  '<a href="https://twitter.com/intent/tweet?url=' + encodedUrl + '" class="article-share-twitter" target="_blank" title="Twitter"></a>',
  '<a href="#qrcode" class="article-share-qrcode" title="微信"></a>',
  '<a href="http://widget.renren.com/dialog/share?resourceUrl=' + encodedUrl + '&srcUrl=' + encodedUrl + '&title=' + title +'" class="article-share-renren" target="_blank" title="人人"></a>',
  '<a href="http://service.weibo.com/share/share.php?title='+title+'&url='+encodedUrl +'&ralateUid='+ tsina +'&searchPic=true&style=number' +'" class="article-share-weibo" target="_blank" title="微博"></a>',
  '<span title="Share to"></span>'
  ].join('');
  $this.append(html);

  $('.hoverqrcode').hide();

  var myWidth = 0;
  function updatehoverqrcode(){
    if( typeof( window.innerWidth ) == 'number' ) {
      myWidth = window.innerWidth;
    } else if( document.documentElement && document.documentElement.clientWidth) {
      myWidth = document.documentElement.clientWidth;
    };
    var qrsize = myWidth > 1024 ? 200:100;
    var options = {render: 'image', size: qrsize, fill: '#2ca6cb', text: url, radius: 0.5, quiet: 1};
    var p = $('.article-share-qrcode').position();
    $('.hoverqrcode').empty().css('width', qrsize).css('height', qrsize)
                          .css('left', p.left-qrsize/2+20).css('top', p.top-qrsize-10)
                          .qrcode(options);
  };
  $(window).resize(function(){
    $('.hoverqrcode').hide();
  });
  $('.article-share-qrcode').click(function(){
    updatehoverqrcode();
    $('.hoverqrcode').toggle();
  });
  $('.article-share-qrcode').hover(function(){}, function(){
      $('.hoverqrcode').hide();
  });
});   
</script>











<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){ 
  $('.article-content').each(function(i){
    $(this).find('img').each(function(){
      if ($(this).parent().hasClass('fancybox')) return;
      var alt = this.alt;
      if (alt) $(this).after('<span class="caption">' + alt + '</span>');
      $(this).wrap('<a href="' + this.src + '" title="' + alt + '" class="fancybox"></a>');
    });
    $(this).find('.fancybox').each(function(){
      $(this).attr('rel', 'article' + i);
    });
  });
  if($.fancybox){
    $('.fancybox').fancybox();
  }
}); 
</script>



<!-- Analytics Begin -->





<!-- Analytics End -->

<!-- Totop Begin -->

	<div id="totop">
	<a title="Back to Top"><img src="/img/scrollup.png"/></a>
	</div>
	<script src="/js/totop.js"></script>

<!-- Totop End -->

<!-- MathJax Begin -->
<!-- mathjax config similar to math.stackexchange -->


<!-- MathJax End -->

<!-- Tiny_search Begin -->

<!-- Tiny_search End -->

  </body>
</html>
